#include <iostream>
#include <new>
#include <libpq-fe.h>
#include "horarios.h"
#include "docentes.h"
#include "turmas.h"
#include "swacd.h"
#include "carrega.h"

using namespace std;

Swacd::Swacd (ArrayDocentes docentes, ArrayTurmas turmas) {
	int p, t;

	numDocentes= docentes.numDocentes;
	numTurmas= turmas.numTurmas;

	// Aloca a matriz de solução de acordo com o numero de docentes e turmas
	atrib= (int**) calloc(docentes.numDocentes, sizeof(int*));
	for(p=0;p<numDocentes;p++){
		atrib[p]= (int*) calloc(turmas.numTurmas, sizeof(int));
	}

	// Inicializa a solução vazia
	for(p=0;p<numDocentes;p++){
		for(t=0;t<numTurmas;t++){
			atrib[p][t]= 0;
		}
	}
	forca=0;
}

void Swacd::print () {
	int p, t;

	cout << "\nSolução por docentes\n" << endl;

	for(p=0;p<numDocentes;p++){
		cout << "----------------------\n" \
				<< "Prof\t:" << p << endl \
				<< "Disc\t:";
		for(t=0;t<numTurmas;t++){
			if(atrib[p][t])
				cout << t << "; ";
		}
		cout << endl;
	}

	cout << "\nSolução por turmas\n" << endl;

	for(t=0;t<numTurmas;t++){
		cout << "----------------------\n" \
				<< "Disc\t:" << t << endl \
				<< "Prof\t:";
		for(p=0;p<numDocentes;p++){
			if(atrib[p][t])
				cout << p << "; ";
		}
		cout << endl;
	}

}

/*
* Programa principal carrega os dados dos professores
*/
int main () {
	ArrayDocentes docentes; // Array com os docentes
	ArrayTurmas turmas;     // Array com as turmas

	// Carregando os dados
	loadData(&docentes,&turmas);

	Swacd swacd(docentes,turmas);
	swacd.print();

	// Imprimindo Dados
	//turmas.print();
	//docentes.print();

}
